September 28, 2020
커밋 = 디렉토리에 있는 모든 파일에 대한 스냅샷을 Git 저장소에 기록하는 것
Git은 가능한 한 커밋을 가볍게 유지하고자 하기 때문에 이전 버전과 다음 버전의 변경 내역 (delta
) 을 저장
→ 대부분의 커밋은 해당 커밋 위의 부모 커밋을 가리킨다
git commit
Git 커밋은 매우 가볍고 전환도 매우 빠르다!
브랜치는 특정 커밋에 대한 참조(reference) → 브랜치도 매우 가볍다
브랜치를 많이 만들어도 메모리나 디스크 공간에 부담이 되지 않는다
브랜치는 하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역
git branch [브랜치명] //브랜치 만들기
git checkout [브랜치명] //새 브랜치로 이동
브랜치를 합치는 방법에는 몇 가지가 있다. merge
는 그 중 하나
git merge
: 두 개의 부모(parent)를 가리키는 특별한 커밋을 만들어 낸다
예시
git merge bugFix
git checkout bugFix
git merge master
bugfix
가 master
의 부모쪽에 있었기 때문에 간단히 bugfix
를 master
가 붙어있는 커밋으로 이동시킴브랜치를 합치는 두 번째 방법은 리베이스!
리베이스
: 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것
예시
bugFix
브랜치에서의 작업을 master
브랜치 위로 직접 옮기기git rebase master
여기서 C3
커밋은 아직 어딘가에 남아있고 (그림에서 흐려짐), C3'
는 master
위에 올려놓은 복사본
master
는 아직 그대로라는 문제가 있음
master
브랜치를 선택한 상태로
git rebase bugFix
master
가 bugFix
의 부모쪽에 있었기 때문에, 단순히 그 브랜치를 더 앞쪽의 커밋을 가리키게 이동
Reference